const Mock = require('mockjs')
Mock.setup({ timeout: 500 });
// var obj = {'aa':'11', 'bb':'22', 'cc':'33', 'dd':'44'};
const data = Mock.mock({
    'items|1000': [{
        'id|+1': 1,    // 属性值自动加 1，初始值为88
        'name': '@cname',  // 中文名称
        'age|18-28': 0,   // 18至28以内随机整数, 0只是用来确定类型
        'birthday': '@date("yyyy-MM-dd HH:mm:ss")',  // 日期
        // 'color': '@color',  // 16进制颜色
        // 'fromObj|2': obj,  // 从obj对象中随机获取2个属性
        // 'fromObj2|1-3': obj,  // 从obj对象中随机获取1至3个属性
        // 'brother|1': ['jack', 'jim'], // 随机选取 1 个元素
        // 'sister|+1': ['jack', 'jim', 'lily'], // array中顺序选取元素作为结果
        // 'friends|2': ['jack', 'jim'], // 重复2次属性值生成一个新数组
        "gender|0-1": 0,
        'img': '@img',
        // "province": "@province",//省
        // "city": "@city(true)",//市
        "county": "@county(true)",//区 带true则携带上级
        hasChildren: true,
        boolDel: 1
    }]
})

const list1 = Mock.mock({
    'items|1000': [{
        'id|+1': 1000,    // 属性值自动加 1，初始值为88
        'name': '@cname',  // 中文名称
        'age|18-28': 0,   // 18至28以内随机整数, 0只是用来确定类型
        'birthday': '@date("yyyy-MM-dd HH:mm:ss")',  // 日期
        "gender|0-1": 0,
        'img': '@img',
        "county": "@county(true)",//区 带true则携带上级
        // hasChildren:false
    }]
})

function filterList (item, name, region) {
    let flag = true
    if (item.boolDel === 1) {
        if (name && item.name.includes(name) === false) {
            flag = false
        }
        if (region !== '' && region !== null && region !== undefined) {
            if (item.gender !== region) {
                flag = false
            }
        }
    } else {
        flag = false
    }

    return flag
}


export default [
    {
        url: '/table/list',
        type: 'post',
        response: config => {
            const { page, limit, name, region } = config.body;
            let list = data.items.filter(item => {
                return filterList(item, name, region);
            })
            let records = list.slice((page - 1) * limit, page * limit)
            return {
                code: 0,
                result: {
                    records,
                    total: list.length
                }
            }
        }
    },
    {
        url: '/table5/list',
        type: 'post',
        response: config => {
            let records = list1.items.sort(() => Math.random() - 0.5).slice(1, 6)
            return {
                code: 0,
                result: records
            }
        }
    },
    {
        url: '/table/edit',
        type: 'post',
        response: config => {
            let params = config.body
            data.items.forEach((item, i) => {
                if (item.id === params.id) {
                    data.items[i] = params
                }
            });
            return {
                code: 0,
                result: true
            }
        }
    },
    {
        url: '/table/add',
        type: 'post',
        response: config => {
            let params = config.body
            params.hasChildren = true;
            params.boolDel = 1;
            params.id = data.items.length + 1;
            params.img = 'http://dummyimage.com/120x240';
            data.items.unshift(params);
            return {
                code: 0,
                result: true
            }
        }
    },
    {
        url: '/table/del',
        type: 'post',
        response: config => {
            let ids = config.body
            ids.forEach(item => {
                let obj = data.items.find(temp => temp.id === item);
                if (obj) {
                    obj.boolDel = 0;
                }
            })
            return {
                code: 0,
                result: true
            }
        }
    },
]
